// 所有配置参考官网，有详细说明: https://cli.vuejs.org/zh/config/#baseurl

// build时默认为生产配置
const isProd = process.env.NODE_ENV === 'production';
// 定义一些公用参数，以供项目中使用
const pluginOptions = {
  // 项目名
  projectName: 'vueProject',
  // 本地ip
  host: '127.0.0.1',
  // 定义端口
  port: 9002,
};

module.exports = {
  devServer: {
    host: pluginOptions.host,
    port: pluginOptions.port,
    public: `${pluginOptions.host}:${pluginOptions.port}`,
    // 默认会自动打开浏览器
    open: false,
    disableHostCheck: true,
    proxy: {
      '/api': {
        target: 'http://127.0.0.1:9001/',
        changeOrigin: true,
        secure: false,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  },
  // 项目路径，默认为根路径，即http://xxx.com/
  publicPath: isProd ? '/app/' : '/',
  // 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码 (在生产构建时禁用 eslint-loader)
  lintOnSave: !isProd,
  // 是否生成sourcemap文件，生成环境不生成以加速生产环境构建
  productionSourceMap: !isProd,
  // 当运行 vue-cli-service build 时生成的生产环境构建文件的目录。注意目标目录在构建之前会被清除 (构建时传入 --no-clean 可关闭该行为)
  outputDir: 'dist',
  // 静态资源文件 (相对于 outputDir) 的目录
  assetsDir: 'static',
  // 指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径
  indexPath: 'index.html',
  filenameHashing: true,
  // css是否开启sourcemap,生成环境不生成
  css: {
    sourceMap: !isProd
  },
  configureWebpack: config => {
    // 引入uglifyjs-webpack-plugin
    let UglifyPlugin = require('uglifyjs-webpack-plugin');
    if (isProd) {
      // 为生产环境修改配置
      config.mode = 'production';
      // 将每个依赖包打包成单独的js文件
      let optimization = {
        minimizer: [new UglifyPlugin({
          uglifyOptions: {
            warnings: false,
            compress: {
              drop_console: false,
              pure_funcs: []
            }
          }
        })]
      };
      Object.assign(config, {
        optimization
      });
    } else {
      // 为开发环境修改配置
      config.mode = 'development';
    }
  },
}
;
